var express = require('express');
var route = express.Router();
//引入用户模型数据库
var User = require('../models/User')

var Content = require('../models/Content')
//定义返回变量
var registerData;
// 初始化格式
route.use(function(req,res,next){
    registerData={
        code:0,
        message:''
    }
    // 进行下面的代码
    next()
})
/*
* 用户注册
*   注册逻辑
*
*   1.用户名不能为空
*   2.密码不能为空
*   3.两次输入密码必须一致
*
*   1.用户是否已经被注册了
*       数据库查询
*
* */
route.post('/user/register',function(req,res,next){
    var username = req.body.username;
    var password = req.body.password;
    var repassword = req.body.repassword;
    if(username==''){
        registerData.code = 1;
        registerData.message = '用户名不能为空';
        res.json(registerData);
        return;
    }
    if(password==''){
        registerData.code = 2;
        registerData.message = '密码不能为空';
        res.json(registerData);
        return;
    }
    if(password!=repassword){
        registerData.code = 3;
        registerData.message = '两次密码不一样';
        res.json(registerData);
        return;
    }
    if(password!=repassword){
        registerData.code = 3;
        registerData.message = '两次密码不一样';
        res.json(registerData);
        return;
    }
    // 数据库查询
    User.findOne({
        username:username
    }).then(function(userInfo){
        // 判断用户是否存在
        // 如果存在
        if(userInfo){
            registerData.code = 4;
            registerData.message = '用户名已经被注册';
            res.json(registerData);
            return;
        }
        // 保存用户注册信息到数据库中
        var user  = new User({
            username:username,
            password:password
        }) 
        //接下来保存数据
        return user.save()
    }).then(function(newUserInfo){
        registerData.message = '注册成功';
        // 返回数据格式化json
        res.json(registerData);
    })
    
})

//登录
route.post('/user/login',function(req,res,next){
    var _username = req.body.username;
    var _password = req.body.password;
    if(_username =='' || _password ==''){
        registerData.code = 1;
        registerData.message = '用户名或密码不能为空';
        res.json(registerData);
        return;
    }
    // 查询数据库中相同用户名和密码记录是否一致
    User.findOne({
        username: _username,
        password: _password,
    }).then(function(userInfo){
        if(!userInfo){
            registerData.code = 2;
            registerData.message = '用户名或密码错误';
            res.json(registerData);
            return; 
        }
        //用户名和密码正确
        registerData.message = '登陆成功';
        registerData.userInfo = {
            _id: userInfo._id,
            username: userInfo.username
        }
        //发送cookie返回给前端
        req.cookies.set('userInfo', JSON.stringify({
            _id: userInfo._id,
            username: userInfo.username
        }));
        res.json(registerData);
        return; 
    })

})
route.get('/user/logout',function(req,res){
    req.cookies.set('userInfo', null);
    res.json(registerData);
    return; 
})

/*
* 获取指定文章的所有评论
* */
route.get('/comment', function(req, res) {
    var contentId = req.query.contentid || '';
    Content.findOne({
        _id: contentId
    }).then(function(content) {
        registerData.data = content.comments;
        console.log(registerData)
        res.json(registerData);
    })
});


//评论提交
route.post('/comment/post',function(req,res){
    //内容的id
    var contentId = req.body.contentid || '';
    console.log(contentId)
    var postData = {
        username: req.userInfo.username,
        postTime: new Date(),
        content: req.body.content
    };
    //查询当前这篇内容的信息
    Content.findOne({
        _id: contentId
    }).then(function(content) {
        content.comments.push(postData);
        return content.save();
    }).then(function(newContent) {
        console.log(newContent)
        registerData.message = '评论成功';
        registerData.data = newContent;
        res.json(registerData);
    });
})
module.exports = route